package com.kaoshi.myweb.webtest.java.generics;

import java.io.Serializable;

public class Pair<T> {
	private T first;
	private T second;
	
	public T getFirst() {
		return first;
	}
	public void setFirst(T first) {
		this.first = first;
	}
	public T getSecond() {
		return second;
	}
	public void setSecond(T second) {
		this.second = second;
	}
	
	public Pair(T first, T second)
	{
		this.first = first;
		this.second = second;
	}
}

//无论何时定义一个泛型类型，都自动提供一个相应的原始类型（raw type）。
//原始类型的名字就是删除类型参数后的泛型类型名。擦除 类型变量，
//并替换 为限定类型(无限定变量用Object)
//Pair<T>,对应的原始类型
//public class Pair {
//	private Object firsObject;
//	private Object second;
//	
//	public Object geObjectFirsObject() {
//		return firsObject;
//	}
//	public void seObjectFirsObject(Object firsObject) {
//		this.firsObject = firsObject;
//	}
//	public Object geObjectSecond() {
//		turn second;
//	}
//	public void seObjectSecond(Object second) {
//		this.second = second;
//	}
//	
//	public Pair(Object firsObject, Object second)
//	{
//		this.firsObject = firsObject;
//		this.second = second;
//	}
//}



class Interval<T extends Comparable & Serializable>{
	private T lower;
}

//原始类型
//class Interval{
//private Comparable lower;
//}
//class Interval<T extends Serializable & Comparable>，
//原始类型，会将 T 替换成 Serializable，而编译器在必要时要向Comparable插入
//强制类型转换。为了提交效率，应该将标签接口（即没有方法的接口）放在边界的末尾


